package es.javamyadmin.ajax;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import es.javamyadmin.dao.TablesDAO;
import es.javamyadmin.pojo.Error;

/**
 * Clase que crea la clausula where para editar un campo de una tabla
 * de la base de datos, o para eliminar una fila
 * @author Emilio Javier Castillo y Hector Delgado Duran
 *
 */
public class EditarCampoAjax extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 8098821487551300389L;
	/**
	 * 
	 */
	/**
	 * doGet solo llama a doPost
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	/**
	 * doPost recoge los datos necesarios para editar un campo o eliminar una fila de la tabla,
	 * pregunta cual de las dos cosas tiene que hacer y genera un json con los posibles errores.
	 *  Este json lo manda al java script para que lo pinte en la vista
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String user = request.getParameter("usuario");
		String pass = request.getParameter("pass");
		String host = request.getParameter("servidor");
		String port = request.getParameter("puerto");
		String database = request.getParameter("bd");
		String tabla = request.getParameter("tabla");
		String fila = request.getParameter("fila");
		String columna = request.getParameter("columna");
		String valor = request.getParameter("valor");
		String delete = request.getParameter("accion");
		TablesDAO table = new TablesDAO();
		table.setPath(getServletContext().getResourceAsStream("/WEB-INF/properties/mensajes.properties"));
		String respuesta = "";
		Error error;
		error = table.where(user, pass, host, port, database, tabla,valor, Integer.parseInt(columna), Integer.parseInt(fila), delete);
		if(!delete.equalsIgnoreCase("true")){
			if(error != null && error.getError() != null && error.getError().trim().equals("")){
				respuesta = "{\"error\":\"null\",\"cambios\": \""+error.getCambios() + "\"}";
			}else{
				respuesta = "{\"error\":\"" + error.getError() + "\",\"descripcion\":\"" + error.getDescripcion().replace("'", "\\'") + "\"}";
			}
		}
		else{
			if(error != null && error.getError() != null && error.getDescripcion() != null){
				respuesta = "{\"error\":\"" + error.getError() + "\",\"descripcion\":\"" + error.getDescripcion().replace("'", "\\'") + "\"}";
			}
			else{
				respuesta = "{\"error\":\"null\"}";
			}
		}
		System.out.println(respuesta);
		PrintWriter out = new PrintWriter(new OutputStreamWriter( response.getOutputStream(),"UTF8"), true);
		try{
			out.print(respuesta);
		}finally{
			out.close();
		}
	}

}